<!DOCTYPE html>
<html lang=zh>
<head>
    <!-- so meta -->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="HandheldFriendly" content="True">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5" />
    <meta name="description" content="1.技术体系结构1.1总体技术体系 单一架构 一个项目，一个工程，导出一个war包，在一个Tomcat上运行，也叫all in one。 单一架构，项目主要应用技术框架为：Spring、SpringMVC、Mybatis   分布式架构 一个项目（对应IDEA中的一个project），拆分成很多个模块，每个模块是一个IDEA中的一个module，每一个工程都是运行在自己的Tomcat上，模块之间可">
<meta property="og:type" content="article">
<meta property="og:title" content="Spring">
<meta property="og:url" content="https://mihaoyou.gitee.io/Spring/index.html">
<meta property="og:site_name" content="Cactus">
<meta property="og:description" content="1.技术体系结构1.1总体技术体系 单一架构 一个项目，一个工程，导出一个war包，在一个Tomcat上运行，也叫all in one。 单一架构，项目主要应用技术框架为：Spring、SpringMVC、Mybatis   分布式架构 一个项目（对应IDEA中的一个project），拆分成很多个模块，每个模块是一个IDEA中的一个module，每一个工程都是运行在自己的Tomcat上，模块之间可">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://www.runoob.com/wp-content/uploads/2015/07/673670c9a34075831373b711cb8f21b7.png">
<meta property="article:published_time" content="2023-04-04T10:38:51.000Z">
<meta property="article:modified_time" content="2023-09-18T14:04:09.114Z">
<meta property="article:author" content="云雪">
<meta property="article:tag" content="spring">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://www.runoob.com/wp-content/uploads/2015/07/673670c9a34075831373b711cb8f21b7.png">
    
    
      
        
          <link rel="shortcut icon" href="/images/favicon.ico">
        
      
      
        
          <link rel="icon" type="image/png" href="/images/favicon-192x192.png" sizes="192x192">
        
      
      
        
          <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
        
      
    
    <!-- title -->
    <title>Spring</title>

    <!-- styles -->
    
<link rel="stylesheet" href="/css/style.css">


     <!-- 添加到这里！！ -->
     
<script src="/js/switch.js"></script>


    <!-- persian styles -->
    
    <!-- rss -->
    
    
	<!-- mathjax -->
	
<meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="Cactus" type="application/atom+xml">
</head>

<body class="max-width mx-auto px3 ltr">
    
      <div id="header-post">
  <a id="menu-icon" href="#" aria-label="目录"><i class="fas fa-bars fa-lg"></i></a>
  <a id="menu-icon-tablet" href="#" aria-label="目录"><i class="fas fa-bars fa-lg"></i></a>
  <a id="top-icon-tablet" href="#" aria-label="顶部" onclick="$('html, body').animate({ scrollTop: 0 }, 'fast');" style="display:none;"><i class="fas fa-chevron-up fa-lg"></i></a>
  <span id="menu">
    <span id="nav">
      <ul>
        <!--
       --><li><a href="/">首页</a></li><!--
     --><!--
       --><li><a href="/about/">关于</a></li><!--
     --><!--
       --><li><a href="/archives/">归档</a></li><!--
     --><!--
       --><li><a href="/categories/">分类</a></li><!--
     --><!--
       --><li><a href="/search/">搜索</a></li><!--
     -->
      </ul>
    </span>
    <br/>
    <span id="actions">
      <ul>
        
        <li><a class="icon" aria-label="上一篇" href="/Spring-boot/"><i class="fas fa-chevron-left" aria-hidden="true" onmouseover="$('#i-prev').toggle();" onmouseout="$('#i-prev').toggle();"></i></a></li>
        
        
        <li><a class="icon" aria-label="下一篇" href="/Java%E8%99%9A%E6%8B%9F%E6%9C%BA/"><i class="fas fa-chevron-right" aria-hidden="true" onmouseover="$('#i-next').toggle();" onmouseout="$('#i-next').toggle();"></i></a></li>
        
        <li><a class="icon" aria-label="返回顶部" href="#" onclick="$('html, body').animate({ scrollTop: 0 }, 'fast');"><i class="fas fa-chevron-up" aria-hidden="true" onmouseover="$('#i-top').toggle();" onmouseout="$('#i-top').toggle();"></i></a></li>
        <li><a class="icon" aria-label="分享文章" href="#"><i class="fas fa-share-alt" aria-hidden="true" onmouseover="$('#i-share').toggle();" onmouseout="$('#i-share').toggle();" onclick="$('#share').toggle();return false;"></i></a></li>

        <li><a class="icon" aria-label="切换主题 " href="#"><i class="fas fa-lightbulb" aria-hidden="true" onmouseover="$('#i-switch').toggle();" onmouseout="$('#i-switch').toggle();" onclick="switchNightMode();return false";></i></a></li>

      </ul>
      <span id="i-prev" class="info" style="display:none;">上一篇</span>
      <span id="i-next" class="info" style="display:none;">下一篇</span>
      <span id="i-top" class="info" style="display:none;">返回顶部</span>
      <span id="i-share" class="info" style="display:none;">分享文章</span>
      <span id="i-switch" class="info" style="display:none;">切换主题</span>
    </span>
    <br/>
    <div id="share" style="display: none">
      <ul>
  <li><a class="icon" target="_blank" rel="noopener" href="http://www.facebook.com/sharer.php?u=https://mihaoyou.gitee.io/Spring/"><i class="fab fa-facebook " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="https://twitter.com/share?url=https://mihaoyou.gitee.io/Spring/&text=Spring"><i class="fab fa-twitter " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://www.linkedin.com/shareArticle?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-linkedin " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="https://pinterest.com/pin/create/bookmarklet/?url=https://mihaoyou.gitee.io/Spring/&is_video=false&description=Spring"><i class="fab fa-pinterest " aria-hidden="true"></i></a></li>
  <li><a class="icon" href="mailto:?subject=Spring&body=Check out this article: https://mihaoyou.gitee.io/Spring/"><i class="fas fa-envelope " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="https://getpocket.com/save?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-get-pocket " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://reddit.com/submit?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-reddit " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://www.stumbleupon.com/submit?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-stumbleupon " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://digg.com/submit?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-digg " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://www.tumblr.com/share/link?url=https://mihaoyou.gitee.io/Spring/&name=Spring&description="><i class="fab fa-tumblr " aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="https://news.ycombinator.com/submitlink?u=https://mihaoyou.gitee.io/Spring/&t=Spring"><i class="fab fa-hacker-news " aria-hidden="true"></i></a></li>
</ul>

    </div>
    <div id="toc">
      <ol class="toc"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-%E6%8A%80%E6%9C%AF%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84"><span class="toc-number">1.</span> <span class="toc-text">1.技术体系结构</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#1-1%E6%80%BB%E4%BD%93%E6%8A%80%E6%9C%AF%E4%BD%93%E7%B3%BB"><span class="toc-number">1.1.</span> <span class="toc-text">1.1总体技术体系</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#1-2%E6%A1%86%E6%9E%B6%E6%A6%82%E5%BF%B5%E5%92%8C%E7%90%86%E8%A7%A3"><span class="toc-number">1.2.</span> <span class="toc-text">1.2框架概念和理解</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-SpringFramework%E4%BB%8B%E7%BB%8D"><span class="toc-number">2.</span> <span class="toc-text">2. SpringFramework介绍</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#2-1Spring%E5%92%8CSpringFramework%E6%A6%82%E5%BF%B5"><span class="toc-number">2.1.</span> <span class="toc-text">2.1Spring和SpringFramework概念</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#2-2-SpringFramework%E4%B8%BB%E8%A6%81%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97"><span class="toc-number">2.2.</span> <span class="toc-text">2.2 SpringFramework主要功能模块</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#2-3-SpringFramework%E4%B8%BB%E8%A6%81%E4%BC%98%E5%8A%BF"><span class="toc-number">2.3.</span> <span class="toc-text">2.3 SpringFramework主要优势</span></a></li></ol></li></ol>
    </div>
  </span>
</div>

    
    <div class="content index py4">
        
        <article class="post" itemscope itemtype="http://schema.org/BlogPosting">
  <header>
    
    <h1 class="posttitle" itemprop="name headline">
        Spring
    </h1>



    <div class="meta">
      <span class="author" itemprop="author" itemscope itemtype="http://schema.org/Person">
        <span itemprop="name">云雪</span>
      </span>
      
    <div class="postdate">
      
        <time datetime="2023-04-04T10:38:51.000Z" itemprop="datePublished">2023-04-04</time>
        
      
    </div>


      
    <div class="article-category">
        <i class="fas fa-archive"></i>
        <a class="category-link" href="/categories/java/">java</a>
    </div>


      
    <div class="article-tag">
        <i class="fas fa-tag"></i>
        <a class="tag-link-link" href="/tags/spring/" rel="tag">spring</a>
    </div>


    </div>
  </header>
  

  <div class="content" itemprop="articleBody">
    <h3 id="1-技术体系结构"><a href="#1-技术体系结构" class="headerlink" title="1.技术体系结构"></a>1.技术体系结构</h3><h4 id="1-1总体技术体系"><a href="#1-1总体技术体系" class="headerlink" title="1.1总体技术体系"></a>1.1总体技术体系</h4><ul>
<li>单一架构<ul>
<li>一个项目，一个工程，导出一个war包，在一个Tomcat上运行，也叫all in one。</li>
<li>单一架构，项目主要应用技术框架为：Spring、SpringMVC、Mybatis</li>
</ul>
</li>
<li>分布式架构<ul>
<li>一个项目（对应IDEA中的一个project），拆分成很多个模块，每个模块是一个IDEA中的一个module，每一个工程都是运行在自己的Tomcat上，模块之间可以互相调用，每一个模块内部可以看成一个单一架构的应用</li>
<li>分布式架构，项目主要应用技术框架：SpringBoot（SSM）、SpringCloud、中间件等</li>
</ul>
</li>
</ul>
<h4 id="1-2框架概念和理解"><a href="#1-2框架概念和理解" class="headerlink" title="1.2框架概念和理解"></a>1.2框架概念和理解</h4><ul>
<li><p>框架（Framwork）是一个集成了基本结构、规范、设计模式、编程语言和程序库等基础组件的软件系统，它可以用来构建更高级别的应用程序。框架的设计和实现旨在解决特定领域中的常见问题，帮助开发人员更高效、更稳定地实现软件开发目标。</p>
</li>
<li><p>框架的优点包括以下几点：</p>
<ul>
<li>提高开发效率：框架提供了许多预先设计好了组件和工具，能够帮助开发人员快速进行开发。相较于传统写代码，在框架提供的规范化环境中，开发者可以更快地实现项目的各种要求。</li>
<li>降低开发成本：框架的提供标准化的编程语言、数据操作等代码片段，避免了重复开发的问题，降低了开发成本，提供了深度优化的系统，降低了维护成本，增强了系统的可靠性。</li>
<li>提高了应用程序的稳定性：框架通常经过了很长时间的开发和测试，其中的许多组件、代码片段和设计模式得到了验证，重复利用这些组件有助于减少bug的出现，从而提高了应用程序的稳定性。</li>
<li>提高标准化的解决方案：框架通常是针对某个特定领域的，通过提供标准化的解决方案，可以为开发人员提供一种共同的语言和思想基础，有组于更好地沟通和协作。</li>
</ul>
</li>
<li><p>框架的缺点包括以下几个方面：</p>
<ul>
<li>学习成本高：框架通常具有特定的语言和编程规范。对于开发人员而言，需要花费时间其背后的架构、模块和逻辑，这对于新手而言可能会耗费较长时间</li>
<li>可能存在局限性：虽然框架提高了开发效率并可以帮助开发人员解决常见问题，但是某些情况下，特定的应用需求可能超出框架的范围，从而导致应用程序无法满足需求。开发人员可能需要更多的控制权和自由度，同时需要在框架和应用之间进行权衡取舍</li>
<li>版本变更和兼容性问题：框架的版本发布和迭代通常会导致代码库的大规模变更，进而导致应用程序出现兼容性问题和漏洞。当框架变更时，需要考虑框架是否向下兼容，以及如何进行适当的测试、迁移和升级。</li>
<li>架构风险：框架涉及到很多抽象和概念，如果开发者没有足够的理解和掌握其架构，可能导致系统出现设计和架构缺陷，从而影响系统的健康性和安全性</li>
</ul>
<p>站在文件结构的角度理解框架，可以将框架总结：框架&#x3D;jar包+配置文件</p>
</li>
<li><p>莎士比亚说：“一千个观众眼中有一千个哈姆雷特”既仁者见仁，智者见智，说每一个人都会对作品有不同的理解，每个人对待任何事物都有自己的看法，同样的技术解决同样的问题会产生不同流程和风格的解决方案，而采用一种框架其实就是限制用户必须使用其规定的方案来实现，可以降低程序员之间沟通以及日后维护的成本!</p>
</li>
<li><p>常用的单一架构JavaEE项目框架演进，从SHH、SHH2过渡到了SSM：SpringMVC、Spring、Mybatis，总之，框架已经对基础的代码进行了封装并提供相应的API，开发者在使用框架是直接调用封装好的API可以省去很多代码编写，从而提高工资效率和开发速度。</p>
</li>
</ul>
<h3 id="2-SpringFramework介绍"><a href="#2-SpringFramework介绍" class="headerlink" title="2. SpringFramework介绍"></a>2. SpringFramework介绍</h3><h4 id="2-1Spring和SpringFramework概念"><a href="#2-1Spring和SpringFramework概念" class="headerlink" title="2.1Spring和SpringFramework概念"></a>2.1Spring和SpringFramework概念</h4><ul>
<li>广义的Spring泛指以<code>SpringFramework</code>为基础的Spring技术栈<ul>
<li>经过十多年的发展，Spring已经不再是一个单纯的应用框架，而是逐渐发展成为一个由多个不同子项目（模块）组成的成熟技术、例如Spring Framework、SpringMVC、<code>SpringBoot</code>、<code>SpringCloud</code>、<code>SpringData</code>、SpringSecurity等，其中SpringFramework是其他子项目的基础</li>
<li>这些子项目涵盖了从企业级应用开发到云计算等各个方面的内容，能够不能够在开发者人员解决软件发展过程中不断产生的各种实际问题，给开发人员带来了更好的开发体验</li>
</ul>
</li>
<li>狭义的Spring：SpringFramework（基础框架）<ul>
<li>狭义的SpringFramework，通常我们将它称为Spring框架</li>
<li>SpringFramework（Spring）框架是一个开源的应用程序框架，由SpringSource公司开发，最初是为了解决企业级开发中各种常见问题而创建的，它提供了很多功能，例如：依赖注入（Dependency Injection）、面向切面编程（AOP）、声明式事务管理（TX）等。</li>
<li>其主要目标是便企业级应用程序的开发变得更加简单和快速，并且Spring框架被广泛应用于Java企业开发领域，Spring全家桶的其他框架都是以SpringFramework框架为基础</li>
</ul>
</li>
</ul>
<h4 id="2-2-SpringFramework主要功能模块"><a href="#2-2-SpringFramework主要功能模块" class="headerlink" title="2.2 SpringFramework主要功能模块"></a>2.2 SpringFramework主要功能模块</h4><p>SpringFramework框架结构图：</p>
<p><img src="https://www.runoob.com/wp-content/uploads/2015/07/673670c9a34075831373b711cb8f21b7.png" alt="spring-overview"></p>
<table>
<thead>
<tr>
<th>功能模块</th>
<th>功能介绍</th>
</tr>
</thead>
<tbody><tr>
<td>Core Container</td>
<td>核心容器，在Spring环境下使用任何功能都必须基于IOC容器</td>
</tr>
<tr>
<td>AOP&amp;Aspects</td>
<td>面向切面编程</td>
</tr>
<tr>
<td>TX</td>
<td>声明式事务管理</td>
</tr>
<tr>
<td>SpringMVC</td>
<td>提供了面向Web应用程序的集成功能</td>
</tr>
</tbody></table>
<h4 id="2-3-SpringFramework主要优势"><a href="#2-3-SpringFramework主要优势" class="headerlink" title="2.3 SpringFramework主要优势"></a>2.3 SpringFramework主要优势</h4><ul>
<li>丰富的生态系统：Spring生态系统非常丰富，支持许多模块和库，如SpringBoot、SpringSecurity、SpringCloud等等，可以帮助开发人员快速构建可靠的企业应用程序</li>
<li>模块化的设计：框架组件之间的松散耦合和模块化设计使得SpringFramework具有良好的可重用性、可扩展性和可维护性。开发人员可以轻松选择自己需要的模块，根据自己的需求进行开发</li>
<li>简化Java开发：SpringFramework简化了Java开发，提供了各种工具和API，可以降低开发复杂度和学习成本。同时，SpringFramework支持各种应用场景，包括Web应用程序、RESTfulAPI、消息传递、批处理等等</li>
<li>不断创新和发展：SpringFramework开发团队一直在不断创新和发展，保持与最新技术的接轨，为开发人员提供更加先进和优秀的工具和框架</li>
</ul>
<p>因此，这些优点使得SpringFramework成为了一个稳定、可靠、且创新的框架，为企业级Java开发提供了一站式的解决方案。Spring边创建Java企业应用程序变得容易。它提供了在企业环境中采用Java语言所需的一切，支持Groovy和Kotlin作为JVM上的替代语言，并且可以根据应用程序的需求灵活地创建多种架构</p>

  </div>
  <div id="copyright"><style>#easter-egg{border:0;padding:10px 0;position:relative}#easter-egg::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"本文结束 \f1b0  感谢阅读";position:absolute;
padding:0 10px;
line-height:1px;
white-space:nowrap;
left:50%;
transform:translateX(-50%)}
</style><hr id="easter-egg"><blockquote style="padding:0">
    <p>作者: <a href="https://mihaoyou.gitee.io">
        <a1>云静</a1>
    </a></p>
    <p>版权声明: 本博客所有文章除特别声明外, 均采用 <a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank" title="Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)"><a1>CC BY-NC-ND 4.0</a1></a> 许可协议, 转载请注明出处！</p></blockquote><hr></div>
</article>


    <div class="blog-post-comments">
        <div id="utterances_thread">
            <noscript>加载评论需要在浏览器启用 JavaScript 脚本支持。</noscript>
        </div>
    </div>


        
          <div id="footer-post-container">
  <div id="footer-post">

    <div id="nav-footer" style="display: none">
      <ul>
         
          <li><a href="/">首页</a></li>
         
          <li><a href="/about/">关于</a></li>
         
          <li><a href="/archives/">归档</a></li>
         
          <li><a href="/categories/">分类</a></li>
         
          <li><a href="/search/">搜索</a></li>
        
      </ul>
    </div>

    <div id="toc-footer" style="display: none">
      <ol class="toc"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-%E6%8A%80%E6%9C%AF%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84"><span class="toc-number">1.</span> <span class="toc-text">1.技术体系结构</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#1-1%E6%80%BB%E4%BD%93%E6%8A%80%E6%9C%AF%E4%BD%93%E7%B3%BB"><span class="toc-number">1.1.</span> <span class="toc-text">1.1总体技术体系</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#1-2%E6%A1%86%E6%9E%B6%E6%A6%82%E5%BF%B5%E5%92%8C%E7%90%86%E8%A7%A3"><span class="toc-number">1.2.</span> <span class="toc-text">1.2框架概念和理解</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-SpringFramework%E4%BB%8B%E7%BB%8D"><span class="toc-number">2.</span> <span class="toc-text">2. SpringFramework介绍</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#2-1Spring%E5%92%8CSpringFramework%E6%A6%82%E5%BF%B5"><span class="toc-number">2.1.</span> <span class="toc-text">2.1Spring和SpringFramework概念</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#2-2-SpringFramework%E4%B8%BB%E8%A6%81%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97"><span class="toc-number">2.2.</span> <span class="toc-text">2.2 SpringFramework主要功能模块</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#2-3-SpringFramework%E4%B8%BB%E8%A6%81%E4%BC%98%E5%8A%BF"><span class="toc-number">2.3.</span> <span class="toc-text">2.3 SpringFramework主要优势</span></a></li></ol></li></ol>
    </div>

    <div id="share-footer" style="display: none">
      <ul>
  <li><a class="icon" target="_blank" rel="noopener" href="http://www.facebook.com/sharer.php?u=https://mihaoyou.gitee.io/Spring/"><i class="fab fa-facebook fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="https://twitter.com/share?url=https://mihaoyou.gitee.io/Spring/&text=Spring"><i class="fab fa-twitter fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://www.linkedin.com/shareArticle?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-linkedin fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="https://pinterest.com/pin/create/bookmarklet/?url=https://mihaoyou.gitee.io/Spring/&is_video=false&description=Spring"><i class="fab fa-pinterest fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" href="mailto:?subject=Spring&body=Check out this article: https://mihaoyou.gitee.io/Spring/"><i class="fas fa-envelope fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="https://getpocket.com/save?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-get-pocket fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://reddit.com/submit?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-reddit fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://www.stumbleupon.com/submit?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-stumbleupon fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://digg.com/submit?url=https://mihaoyou.gitee.io/Spring/&title=Spring"><i class="fab fa-digg fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="http://www.tumblr.com/share/link?url=https://mihaoyou.gitee.io/Spring/&name=Spring&description="><i class="fab fa-tumblr fa-lg" aria-hidden="true"></i></a></li>
  <li><a class="icon" target="_blank" rel="noopener" href="https://news.ycombinator.com/submitlink?u=https://mihaoyou.gitee.io/Spring/&t=Spring"><i class="fab fa-hacker-news fa-lg" aria-hidden="true"></i></a></li>
</ul>

    </div>

    <div id="actions-footer">
        <a id="menu" class="icon" href="#" onclick="$('#nav-footer').toggle();return false;"><i class="fas fa-bars fa-lg" aria-hidden="true"></i> 菜单</a>
        <a id="toc" class="icon" href="#" onclick="$('#toc-footer').toggle();return false;"><i class="fas fa-list fa-lg" aria-hidden="true"></i> 目录</a>
        <a id="share" class="icon" href="#" onclick="$('#share-footer').toggle();return false;"><i class="fas fa-share-alt fa-lg" aria-hidden="true"></i> 分享</a>
        <a id="top" style="display:none" class="icon" href="#" onclick="$('html, body').animate({ scrollTop: 0 }, 'fast');"><i class="fas fa-chevron-up fa-lg" aria-hidden="true"></i> 返回顶部</a>
    </div>

  </div>
</div>

        
        <footer id="footer">
      <div class="footer-left">
        Copyright &copy;
        
        
        2022-2023
        云雪
      </div>
      <div class="footer-right">
        <nav>
          <ul>
            <!--
          --><li><a href="/">首页</a></li><!--
        --><!--
          --><li><a href="/about/">关于</a></li><!--
        --><!--
          --><li><a href="/archives/">归档</a></li><!--
        --><!--
          --><li><a href="/categories/">分类</a></li><!--
        --><!--
          --><li><a href="/search/">搜索</a></li><!--
        -->
          </ul>
          <ul>
          
              <!-- 不蒜子统计 -->
              <span id="busuanzi_container_site_pv">
                  本站总访问量<span id="busuanzi_value_site_pv"></span>次
              </span>
              <span class="post-meta-divider">|</span>
              <span id="busuanzi_container_site_uv" style='display:none'>
                      本站访客数<span id="busuanzi_value_site_uv"></span>人
              </span>
            <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
            
          </ul>
        </nav>
      </div>
      
</footer>


    </div>
    <!-- styles -->



  <link rel="preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css" crossorigin="anonymous" onload="this.onload=null;this.rel='stylesheet'"/>


    <!-- jquery -->
 
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" crossorigin="anonymous"></script> 




<!-- clipboard -->

  
    <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.7/clipboard.min.js" crossorigin="anonymous"></script> 
  
  <script type="text/javascript">
  $(function() {
    // copy-btn HTML
    var btn = "<span class=\"btn-copy tooltipped tooltipped-sw\" aria-label=\"复制到粘贴板！\">";
    btn += '<i class="far fa-clone"></i>';
    btn += '</span>'; 
    // mount it!
    $(".highlight table").before(btn);
    var clip = new ClipboardJS('.btn-copy', {
      text: function(trigger) {
        return Array.from(trigger.nextElementSibling.querySelectorAll('.code')).reduce((str,it)=>str+it.innerText+'\n','')
      }
    });
    clip.on('success', function(e) {
      e.trigger.setAttribute('aria-label', "复制成功！");
      e.clearSelection();
    })
  })
  </script>


<script src="/js/main.js"></script>

<!-- search -->

<!-- Google Analytics -->

<!-- Baidu Analytics -->

  <script type="text/javascript">
        var _hmt = _hmt || [];
        (function() {
          var hm = document.createElement("script");
          hm.src = "https://hm.baidu.com/hm.js?d052d72734717a430b46e4d07257350b";
          var s = document.getElementsByTagName("script")[0];
          s.parentNode.insertBefore(hm, s);
        })();
        </script>

<!-- Cloudflare Analytics -->

<!-- Umami Analytics -->

<!-- Disqus Comments -->

<!-- utterances Comments -->

    <script type="text/javascript">
      var utterances_repo = 'mihaoyou/huayu';
      var utterances_issue_term = 'pathname';
      var utterances_label = 'Comment';
      var utterances_theme = 'github-dark';

      (function(){
          var script = document.createElement('script');

          script.src = 'https://utteranc.es/client.js';
          script.setAttribute('repo', utterances_repo);
          script.setAttribute('issue-term', 'pathname');
          script.setAttribute('label', utterances_label);
          script.setAttribute('theme', utterances_theme);
          script.setAttribute('crossorigin', 'anonymous');
          script.async = true;
          (document.getElementById('utterances_thread')).appendChild(script);
      }());
  </script>

</body>
</html>
